1. Statement of the Technical Field
The present invention relates to the field of software testing and more particularly to Web application testing.
2. Description of the Related Art
Ensuring the quality and operation of a Web application can be an expensive and complex task. Typically, the task of testing a Web application entails a client-side load driving mechanism capable of accurately emulating a population of Web application end-users. In particular, each emulated end-user can forward interactive requests to the Web application using a traditional access device, for instance a Web content browser. Resulting responses, however, need not be rendered in the Web content browser. Rather, in the testing framework, resulting responses can be interpreted programmatic ally.
Web applications generally include a set of user “scenarios” which ought to be tested prior to being deployed. A scenario can include a sequence of individual Web requests which together form a higher level, logical operation. Each individual action may be dependent upon the results from a prior request. For example, in an online stock brokerage, a scenario could include an account request to view the current balance and available funds, the results being used to calculate an amount to invest. Second, a quote request can be issued to view the current trading price of a stock of interest. The results from the quote request can be used to calculate the number of shares to purchase. Finally, a purchase order can be placed for the purchase of some amount of shares with the results being used to verify both the purchase and the new account balance.
Notably, managing the combined visual, stateless and dynamic nature of interactive requests and the resulting responses in a Web scenario can require complex software and significant hardware resources. In particular, Web content is designed for human visual consumption and not for machine analysis. In that regard, inside the testing framework the resulting responses can be difficult and resource intensive to parse and interpret in the load driving mechanism. For example, when testing a conventional Web application, typically the client-side load driving mechanism posts user requests through forms and gleans the results of those requests through complex parsing of response data. Subsequently, forms from the response can be completed and used to submit the next operation in the testing sequence.
In view of the stateless nature of the underlying network protocols used to shuttle requests and responses between the client side and the server side, the state of a Web application scenario typically is maintained by the Web application on the server rather than in the client. In order to drive Web scenarios in a testing framework, though, the complete user state also must be managed for the population of users by the load driving mechanism in the client. Hence, the effective testing of Web scenarios can result in the inefficient duplication of the state management effort both in the client and server.